--------------------------------------- Hi-Speed Mouse Driver v0.24 マウスIOCS拡張プログラム Nazca SOFTWARE 1994 ------------------------- By こぺる --- ■このプログラムは  これは,X680x0のマウス関連処理を高速にし,マウスIOCS関連の妙な仕様を改善し,また,各種機能を拡張する(予定の ^^;)プログラムです.  作成途中のテストバージョンです. ■使用方法  HMOUSE.X を実行すると常駐します.  その他,以下のオプションが指定可能です. -- OFF / ON  エミュレーションを中断/再開します.常駐時に OFF を指定すると,エミュレーションを行わない状態で常駐します.  タブレットを使用しない場合や,接続していない場合には,OFFにしておくことができます. -R  常駐を解除します. -S[<移動速度>][,<2乗開始カウント数>]  マウスカーソルの移動速度を設定します.  <移動速度>は1〜999で,マウスから読み込んだデータを2乗加工した値の何倍した値を使用するかどうかを指定します.実際の倍数の64倍した値を指定します.  この値を2倍(1/2倍)すれば,マウスカーソルの移動速度も2倍(1/2倍)されます.ROM IOCSでの処理では,1.25倍されています.これに合わせて省略値は80となっています.  <2乗開始カウント>は0〜127で,マウスある速さ以上で移動させた場合に,マウスの移動速度を速度の2乗に比例させる機構の境界カウント数を指定します.  値が小さいほど(0以外),速さの変化に敏感になります.また,値が0もしくは128以上の場合は2乗しなくなります.ROM IOCSの処理では,8ドット以上の場合に2乗処理が行われるようになっています.これに合わせて省略値は8となっています. ---  なお,各オプションは常駐前/常駐後ともに指定可能なので,常駐した後に設定を変更することができます. ■変更点・特長など ●命令の手動最適化による高速化  割り込み処理のロック時間を最小限に抑えるなどの最適化もやってますが,まだあまり気合を入れてません.(^^;) ●マウスカーソル表示/消去ルーチンの高速化  アドレス計算を1回で済ませたり,表示と保存を同時に行なうなどの最適化をやってあります.また,消去時のマスク処理を行なわないため,MOUSEKと同じくらいの速度になっているはずです.なお,この表示方式は,v1.30のIOCS ROMを参考にしています. ●割り込みルーチン内の高速化  マウスデータ処理(割り込み処理ルーチン)での,マウスの移動ベクトル計算には,MUL命令を使用せずにテーブルを使用してあります. ●謎の縦1008ドットの制限を廃止  マウス表示時やMS_LIMITでの縦1008ドットの制限を改善します.これでKo-WINDOWも安心です. ●垂直帰線期間を待たない  貴重な割り込み時間を潰すなんて却下です.そのうち,帰線期間開始割り込みなどを使ってちらつきには対処するかもしれません. ●VRAMアクセスの改良  テキストVRAMのマスク/同時アクセスなどの機能は一切使っていません.また,IOCS ROMでは,VRAMアクセス時にテキストVRAMのマスクレジスタ使用フラグを無効にしていないという謎の仕様も修正してあります. ●細かい点での改良  マウスカーソルの表示オフセットが16ドット以上でも可能な限り表示するようになっています.従来はマウスカーソル表示ルーチンが範囲外の表示オフセットを想定した作りになっていないため,16ドット以上の指定は強制的に0にされていました.  MS_SEL2関連の扱いを改良し,すべてのパターンのオフセットが適用されるようになっています.飛び跳ねるカーソルなどの表現が可能です.従来はMS_SEL2の最初のパターンの表示オフセットが全てのパターンに適用されていました.  前述の改良の副作用で,MS_SEL2でのアニメーション周期の最大が,16パターンに増えています.ちなみに,従来は最大6パターンです. ■問題点 ●ROM内ルーチンの不備  ROMのソフトキーボード処理(ソフトキーボードON/OFF時のマウスカーソルの一時消去/表示など)では,なんと IOCS _MS_CURON/_MS_CUROF のデフォルトROMアドレスを直接呼んでいます (信じられない…).この部分がきちんとIOCSコールベクタの通りに呼び出してくれていれば,完成というところまで来ているのですが….  HMOUSEで使用しているIOCSワークはROM IOCSの内容と矛盾がほとんどないため,普段はソフトキーボードに重なっているマウスカーソルの裏パターンが化ける/残る程度の問題しか起きませんが,MS_SEL2関連のワークエリアの扱いが違うので,MS_SEL2使用時にマウスカーソルの右ボタン制御などで ROMのマウスカーソル操作処理が呼び出された場合,マウスカーソルのパターン番号を一瞬間違ってしまうことがあります.これは,今までのアプリケーションを使う場合にエラーが起きないよう細工してあるためで,見た目以外の実害はありません.(たぶん ^^;) ■今後の改良予定 ●ソフトキーボード処理の解析  問題点で書いた通り,ソフトキーボード処理も乗っとらなければなりません.これを解析し,完全なプログラムにするのが最重要課題です(;_;). ●マウスパターン番号の獲得などを可能にする ●マウスパターン数を増やす  今の16パターンのみってのは,ちょっと少ないような気がします.32〜256パターンくらいは定義できたほうがいいような気がします.それから,初期化直後のマウスカーソルパターンを,フォントファイルのような感じで組み込み時に設定できるようになっていると便利かもしれません. ●マウスパターンのデータフォーマットを拡張する.  これ,これがやりたいんです.もう,X680x0の画像をTVに表示した時にマウスカーソルがどこにあるのかわからなかったりして,悲しい思いをしたくないです.というわけで,びっぐなマウスカーソルや,3色マウスカーソル等を表示可能にする予定です. ●調子に乗ってびっぐなソフトキーボードとかcompactソフトキーボードの実現  compactキーボードのくせに,ソフトキーボードの形が違って悲しい思いをしているのは,私だけではないはずです(^^;). ●ダブルマウス対応,マウス以外の入力装置対応など  技術的には可能です.問題は,IOCSコールをいかにして拡張するかどうかです.というわけで,だれかマウス貸してください(^^;). ●外部アプリケーションからHMOUSEの状態を設定できるようにする ●SCC-B割り込み,TIMER-C割り込み処理の見直し ●非常駐部の手抜き処理を直す  とにかく,まずは完成を目指します.(^^; ■動作確認  HMOUSE.X を組み込んで Ko-Window(wsrv.x v2.24+11.2) を使用しています.ソフトキーボードを使用しないアプリケーションにおいては,まったく問題はないようです.また,通常の使用でも,ソフトキーボードが化けること以外は,問題ないようです.VS.X も動きます. ■SPECIAL THANKS TO COR.さん 美紀ちゃん  プログラム開発にあたり,さまざまな形で協力していただいた方々へ,この場を借りて感謝します.ありがとうございました. ■使用承諾  このプログラムは,無保証のフリーソフトウェアです.著作権は作者(こぺる)が保持していますが,内容を改変せずに,営利を目的とせずに,作者の持つ著作上の権利を侵害しないようにするなら,配布・転載は自由に行なって結構です.作者への報告は必要ありません.  なお,例によって,このプログラムの運用に関して,作者はいかなる責任も持ちません.よって,このプログラムを使用した/しなかったことにより発生したいかなる被害,損害について,作者は一切責任を負いません.運用者自身の判断,責任で運用してください.  このプログラムは,正しく動作することを望んで製作されていますが,バグのない,正しく動作するプログラムである保証はありません.が,作者は可能な限りバグ修正や機能改善などを行なって対処したいと思っています. ★連絡先 --- E-mail : copel@coins.is.tsukuba.ac.jp でんでんネット : DEN0671 ---  現在は解析作業中です.IOCSの動作・ワークエリア内容などの解析情報があったら,ぜひ教えてください.(;_;) -- こぺる